package customerEnter.Frame.JDBCDao.Interface;

import java.util.LinkedList;
import java.util.List;

import customerEnter.Frame.DaoDataTransmission.DaoFrameDMLBaseTransmission;
import customerEnter.Frame.DaoDataTransmission.FrameBeanSuper;
import customerEnter.Frame.DaoDataTransmission.PagingParametersResult;
import customerEnter.Frame.Enum.FrameDataQueryUse;

/**
 * 符合開閉原則
 * 
 * 类名称：DaoFrameInterface 类描述： 创建人：dy 创建时间：2016-4-15 下午4:35:37
 * 
 */
public abstract interface DaoFrameInterface<T extends Object, K extends FrameBeanSuper> {
	/**
	 * 統一查詢接口
	 */
	@SuppressWarnings("rawtypes")
	public PagingParametersResult findConditionQueryTransmission(String Front, String ClassName, String where,
			Class<?> Class, boolean PagingParametersCount, boolean cache, FrameDataQueryUse frameDataQueryUse);

	/**
	 * 獲取類的名字 外部接口要用
	 */
	public String FindTClassName();

	/**
	 * 獲取類的名字 外部接口要用
	 */
	public String FindTClassName(Class<?> class1);

	/**
	 * 增加數據
	 */
	String InsterObject(String DataBase, String TableName, LinkedList<?> values);

	/**
	 * 添加數據 對象與表的映射
	 * 
	 * @return
	 */
	String InsertMapping(String DataBase, String Table, Object MappingObject);

	/**
	 * 批量增加數據
	 * 
	 * @throws Exception
	 */
	Integer InsertBatchData(String DataBase, String TableName, List<?> t, Class<?> class1) throws Exception;

	/**
	 * 查詢統計數據
	 */
	Integer QueryCount(String sql);

	/**
	 * 修改數據 沒有封裝
	 */
	public Integer UpdateObject(String sql);

	/**
	 * 刪除數據
	 */
	public Integer deleteObject(String sql);

	/**
	 * 修改數據 對象與表的映射
	 */
	public String UpdateMappingObject(String DataBase, String TableName, Object MappingObject, String where);

	/**
	 * 數據庫的 分頁區分
	 */
	public void QueryPage(String Front, String ClassName, String where, int size, int page, String order,
			String descOrAsc, DaoFrameDMLBaseTransmission daoFrameDMLBaseTransmission);

	/**
	 * 獲取sql
	 */
	public String SqlAcquire(String DataBase, String DML, String Front, String Rule, String TableName, String where);

}